/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package persistencia;

import io.CuotaDTO;
import java.sql.*;
import java.util.ArrayList;

/**
 * Esta clase representa al gestor de la tabla cuota que se encuentra
 * almacenada en la base de datos.
 * @author Nahuel
 */
public class MySQLCuotaDAO {

    /**
     * Este mensaje permite insertar una nueva entrada en la tabla cuota
     * @param cuota
     * @param id
     * @throws DAOException 
     */
    public void agregarCuota(CuotaDTO cuota, int id) throws DAOException {
        Connection conexion = null;
        try {
            conexion = MySQLDAOFactory.getMySQLDAOFactory().getConexion();
            Statement stat = conexion.createStatement();
            stat.executeUpdate("insert into cuota (idPlan,numero,monto,fechaVencimiento) values (" + id + "," + cuota.getNumero() + "," + cuota.getMonto() + ",'" + cuota.getFechaVencimiento() + "')");
        } catch (SQLException e) {
            throw new DAOException("Error al insertar la cuota en la base de datos", e);
        } finally {
            MySQLDAOFactory.getMySQLDAOFactory().cerrarConexion(conexion);
        }
    }

    /**
     * Este método permite obtener todas las cuotas de un determinado plan
     * @param id del plan al que pertenece la cuota
     * @return lista de cuotas
     * @throws DAOException 
     */
    public ArrayList<CuotaDTO> getCuotas(int id) throws DAOException {
        Connection conexion = null;
        try {
            conexion = MySQLDAOFactory.getMySQLDAOFactory().getConexion();
            Statement stat = conexion.createStatement();
            ResultSet rs = stat.executeQuery("select * from cuota where idPlan=" + id);
            ArrayList<CuotaDTO> lista = new ArrayList();
            while (rs.next()) {
                CuotaDTO venta = new CuotaDTO(rs.getInt("id"), rs.getInt("numero"), rs.getDouble("monto"), rs.getDate("fechaVencimiento"));
                lista.add(venta);
            }
            rs.close();
            return lista;
        } catch (SQLException e) {
            throw new DAOException("Error al leer las cuotas desde la base de datos", e);
        } finally {
            MySQLDAOFactory.getMySQLDAOFactory().cerrarConexion(conexion);
        }
    }

    /**
     * Este método permite borrar una cuota
     * @param id
     * @return
     * @throws DAOException 
     */
    public boolean eliminarCuota(int id) throws DAOException {
        Connection conexion = null;
        try {
            conexion = MySQLDAOFactory.getMySQLDAOFactory().getConexion();
            Statement stat = conexion.createStatement();
            if (stat.executeUpdate("delete from cuota where id = '" + id + "'") == 0) {
                return false;
            } else {
                return true;
            }
        } catch (SQLException e) {
            throw new DAOException("Error al borrar la cuota de la base de datos", e);
        } finally {
            MySQLDAOFactory.getMySQLDAOFactory().cerrarConexion(conexion);
        }
    }


}

